package com.tests;

import com.metier.*;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
 * Classe de test de la Classe metier Borne
 * 
 * @author b0dian
 * @version 1.0
 *
 */
public class BornesTest {

	Borne b;
	Borne b1;
	TypeCharge t;

	/**
	 * Nos test necessiterons des objets qui sont instancie ici
	 */
	@Before
	public void setUp() throws Exception {
		t = new TypeCharge(1, "Charge semi-rapide", 25);
		b = new Borne(1, "25/09/2014", 1, t);
		b1 = new Borne("15/01/2011", 2, t);
	}

	/**
	 * Les objets instancie precedemment doivent ètre detruit
	 * 
	 * @throws Exception
	 */
	@After
	public void tearDown() throws Exception {
		b = null;
		t = null;
		b1 = null;
	}

	/**
	 * Test de l'objet, on verifie que l'instanciation s'est deroule
	 * correctement
	 */
	@Test
	public void testBorne() {
		assertNotNull("L'instance est creee", b);
		assertNotNull("L'instance est creee", b1);
	}

	/**
	 * Test methode GetIdBorne
	 */
	@Test
	public void testGetIdBorne() {
		assertEquals("Cet id est t'il bon", 1, b.getIdBorne());
	}

	/**
	 * Test methode GetIdBorne en cas de faux
	 */
	@Test
	public void testGetIdBorneInverse() {
		assertNotEquals("Cet id est t'il mauvais", 2, b.getIdBorne());
	}

	/**
	 * Test methode GetEtat
	 */
	@Test
	public void testGetEtat() {
		assertEquals("Cet etat est t'il bon", "ES", b.getEtat());
		assertEquals("Cet etat est t'il bon", "ES", b1.getEtat());
	}

	/**
	 * Test methode GetEtat en cas de faux
	 */
	@Test
	public void testGetEtatInverse() {
		assertNotEquals("Cet etat est t'il mauvais", "HS", b.getEtat());
	}

	/**
	 * Test methode GetDateMiseEnService
	 */
	@Test
	public void testGetDateMiseEnService() {
		assertEquals("Cet date est t'elle bonne", "25/09/2014",
				b.getDateMiseEnService());
		assertEquals("Cet date est t'elle bonne", "15/01/2011",
				b1.getDateMiseEnService());
	}

	/**
	 * Test methode GetDateMiseEnService en cas de faux
	 */
	@Test
	public void testGetDateMiseEnServiceInverse() {
		assertNotEquals("Cet date est t'elle mauvaise", "25/06/2014",
				b.getDateMiseEnService());
	}

	/**
	 * Test methode GetIdStation
	 */
	@Test
	public void testGetIdStation() {
		assertEquals("Cet idStation est t'il bon", 1, b.getIdStation());
		assertEquals("Cet idStation est t'il bon", 2, b1.getIdStation());
	}

	/**
	 * Test methode SetIdStation
	 */
	@Test
	public void testSetIdStation() {
		b.setIdStation(3);
		b1.setIdStation(1);
		assertEquals("cette idStation e t'il bien ete modifie", 3,
				b.getIdStation());
		assertEquals("cette date est t'elle bien modifie", 1, b1.getIdStation());
	}

	/**
	 * Test methode SetDateMiseEnService
	 */
	@Test
	public void testSetDateMiseEnService() {
		b.setDateMiseEnService("12/02/1998");
		b1.setDateMiseEnService("12/02/1998");
		assertEquals("cette date est t'elle bien modifie", "12/02/1998",
				b.getDateMiseEnService());
		assertEquals("cette date est t'elle bien modifie", "12/02/1998",
				b1.getDateMiseEnService());
	}

	/**
	 * Test methode SetDateMiseEnService en cas de faux
	 */
	@Test
	public void testSetDateMiseEnServiceInverse() {
		assertNotEquals("cette date est t'elle bien non modifie", "12/02/1998",
				b.getDateMiseEnService());
	}

	/**
	 * //Test methode GetType
	 */
	@Test
	public void testGetType() {
		assertEquals("Ce type est t'il bon", t, b.getType());
		assertEquals("Ce type est t'il bon", t, b1.getType());
	}

	/**
	 * Test methode GetType en cas de faux
	 */
	@Test
	public void testGetTypeInverse() {
		TypeCharge ty = new TypeCharge(1, "fast charge", 56);
		assertNotEquals("Ce type est t'il mauvais", ty, b.getType());
	}

	/**
	 * Test methode SetType
	 */
	@Test
	public void testSetType() {
		TypeCharge ty = new TypeCharge(5, "soft", 56);
		b.setType(ty);
		assertEquals("Ce type est t'il bon", ty, b.getType());
		b1.setType(ty);
		assertEquals("Ce type est t'il bon", ty, b1.getType());
	}

	/**
	 * Test methode SetType en cas de faux
	 */
	@Test
	public void testSetTypeInverse() {
		TypeCharge ty = new TypeCharge(5, "soft", 56);
		assertNotEquals("Ce type est t'il mauvais", ty, b.getType());
	}

}
